-- $Id$
-- $Source#
-- *****************************************************************
-- DSMON-MIB.my:
--
-- RMON-2 Extensions for the Monitoring of Differentiated Services
-- Enabled Networks
--
--    * IP DIFFSERV DS codepoint statistics
--        * Per DS Codepoint
--        * Per Protocol Per DS Codepoint
--        * Per DS Codepoint Per IP Host Address
--
-- December 1998, Andy Bierman
--
-- Copyright (c) 1998 - 1999 by cisco Systems, Inc.
-- All rights reserved.
--
-- *****************************************************************
-- $Endlog$
--
--
-- This mib was extracted from an IETF Draft.
-- It currently uses a ciscoExperiment number.
--
--

DSMON-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY, Integer32, Counter32, experimental
                FROM SNMPv2-SMI
        MODULE-COMPLIANCE, OBJECT-GROUP
                FROM SNMPv2-CONF
        RowStatus, TEXTUAL-CONVENTION
                FROM SNMPv2-TC
        OwnerString
                FROM IF-MIB
        protocolDirLocalIndex, LastCreateTime,
        DataSource, ZeroBasedCounter32, TimeFilter
                FROM RMON2-MIB
        ZeroBasedCounter64
                FROM HC-RMON-MIB
        ciscoExperiment FROM CISCO-SMI;

dsMonMIB MODULE-IDENTITY
        LAST-UPDATED    "9811170000Z"
        ORGANIZATION    "Cisco Systems, Inc."
        CONTACT-INFO
                "       Andy Bierman
                        Cisco Systems, Inc.
                Postal: 170 West Tasman Drive
                        San Jose, CA USA 95134
                   Tel: +1 408 527-3711
                E-mail: abierman@cisco.com"
        DESCRIPTION
            "This module defines Remote Monitoring MIB extensions for
            Differentiated Services enabled networks."
        ::= { ciscoExperiment 88888 }

dsMonObjects       OBJECT IDENTIFIER ::= { dsMonMIB 1 }
dsMonNotifications OBJECT IDENTIFIER ::= { dsMonMIB 2 }
dsMonConformance   OBJECT IDENTIFIER ::= { dsMonMIB 3 }

dsStatObjects      OBJECT IDENTIFIER ::= { dsMonObjects 1 }
dsPdistObjects     OBJECT IDENTIFIER ::= { dsMonObjects 2 }
dsHostObjects      OBJECT IDENTIFIER ::= { dsMonObjects 3 }

--
-- Extensions to the RMON-2 MIB for Differentiated Services
-- Monitoring
--
-- In order to maintain the RMON 'look-and-feel', some of
-- the text from the RMON-2 and HC-RMON MIBs by
-- Steve Waldbusser have been used in this MIB.
--

--
-- Textual Convention to define a DS Codepoint for
-- monitoring purposes
--

DSCodePoint ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
            "This TC describes an object which identifies the
            Differentiated Services Codepoint value in an IPv4 or IPv6
            packet header. "
    REFERENCE
            "Definition of the Differentiated Services Field (DS Field)
            in the IPv4 and IPv6 Headers [16]."
    SYNTAX Integer32 (0..63)

--
-- DS Codepoint Per-DataSource Statistics Control Table
--

dsStatsControlTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DsStatsControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Controls the setup of per-data source per-DS codepoint
            distribution statistics."
    ::= { dsStatObjects 1 }

dsStatsControlEntry OBJECT-TYPE
    SYNTAX      DsStatsControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A conceptual row in the dsStatsControlTable.

            Entries are created and deleted from this table by
            management action only, using the dsStatsControlStatus
            RowStatus object.

            Activation of a control row in this table will cause an
            associated dsStatsTable to be created and maintained by the
            agent."
    INDEX { dsStatsControlIndex }
    ::= { dsStatsControlTable 1 }

DsStatsControlEntry ::= SEQUENCE {
    dsStatsControlIndex                Integer32,
    dsStatsControlDataSource           DataSource,
    dsStatsControlDroppedFrames        Counter32,
    dsStatsControlCreateTime           LastCreateTime,
    dsStatsControlOwner                OwnerString,
    dsStatsControlStatus               RowStatus
}

dsStatsControlIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An arbitrary and unique index for this
            dsStatsControlEntry."
    ::= { dsStatsControlEntry 1 }

dsStatsControlDataSource OBJECT-TYPE
    SYNTAX      DataSource
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The source of data for the this per-protocol DS codepoint
            distribution.

            The statistics in this group reflect all IPv4 and IPv6
            packets on the local network segment attached to the
            identified interface.

            This object may not be modified if the associated
            dsStatsControlStatus object is equal to active(1)."
    ::= { dsStatsControlEntry 2 }

dsStatsControlDroppedFrames OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The total number of frames which were received by the probe
            and therefore not accounted for in the *StatsDropEvents, but
            for which the probe chose not to count for this entry for
            whatever reason.  Most often, this event occurs when the
            probe is out of some resources and decides to shed load from
            this collection.

            This count does not include packets that were not counted
            because they had MAC-layer errors.

            Note that, unlike the dropEvents counter, this number is the
            exact number of frames dropped."
    ::= { dsStatsControlEntry 3 }

dsStatsControlCreateTime OBJECT-TYPE
    SYNTAX     LastCreateTime
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of sysUpTime when this control entry was last
            activated. This can be used by the management station to
            ensure that the table has not been deleted and recreated
            between polls."
    ::= { dsStatsControlEntry 4 }

dsStatsControlOwner OBJECT-TYPE
    SYNTAX      OwnerString
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The entity that configured this entry and is therefore
            using the resources assigned to it."
    ::= { dsStatsControlEntry 5 }

dsStatsControlStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The status of this row.

            An entry may not exist in the active state unless all
            objects in the entry have an appropriate value.

            If this object is not equal to active(1), all associated
            entries in the dsStatsTable shall be deleted."
    ::= { dsStatsControlEntry 6 }

--
-- DS Codepoint Per-DataSource Statistics Table
--

dsStatsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DsStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A list of information on Per Protocol DS codepoint usage.

            The following table defines per-DS codepoint statistics for
            full and/or half-duplex links as well as high capacity
            links.

            For half-duplex links, or full-duplex-capable links
            operating in half-duplex mode, the dsStatsIn* objects shall
            be used and the dsStatsOut* objects will not increment.

            For full-duplex links, the dsOut* objects will be present.
            Whenever possible, the probe should count packets moving
            away from the closest terminating equipment as output
            packets. Failing that, the probe should count packets moving
            away from the DTE as output packets."
    ::= { dsStatObjects 2 }

dsStatsEntry OBJECT-TYPE
    SYNTAX      DsStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A list of information on Differentiated Services DS
            codepoint usage, containing inbound and outbound packet and
            octet counters for each DS codepoint configured for
            collection.

            The dsStatsControlIndex value in the index identifies the
            dsStatsControlEntry on whose behalf this entry was created.

            Only entries with non-zero statistics will be returned by
            the agent, in order to reduce the amount of polling required
            to retrieve data from this table. That is, an entry will be
            created when a packet with the indicated DS codepoint value
            is detected by the agent.

            Note that only protocols which are encapsulated in IPv4 or
            IPv6 packets will be counted in this table.

            An example of the indexing of this entry is
            dsStatsOutPkts.1.16"
     INDEX { dsStatsControlIndex, dsStatsDsCodept }
    ::= { dsStatsTable 1 }

DsStatsEntry ::= SEQUENCE {
    dsStatsDsCodept          DSCodePoint,
    dsStatsInPkts            ZeroBasedCounter32,
    dsStatsInOctets          ZeroBasedCounter32,
    dsStatsInOvflPkts        ZeroBasedCounter32,
    dsStatsInOvflOctets      ZeroBasedCounter32,
    dsStatsInHCPkts          ZeroBasedCounter64,
    dsStatsInHCOctets        ZeroBasedCounter64,
    dsStatsOutPkts           ZeroBasedCounter32,
    dsStatsOutOctets         ZeroBasedCounter32,
    dsStatsOutOvflPkts       ZeroBasedCounter32,
    dsStatsOutOvflOctets     ZeroBasedCounter32,
    dsStatsOutHCPkts         ZeroBasedCounter64,
    dsStatsOutHCOctets       ZeroBasedCounter64
}

dsStatsDsCodept OBJECT-TYPE
    SYNTAX      DSCodePoint
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The Differentiated Services Codepoint value associated with
            the aggregated statistics for a particular data source."
    ::= { dsStatsEntry 1 }

dsStatsInPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of packets using a particular DS codepoint
            value, received on a half-duplex link or on the inbound
            connection of a full-duplex link."
    ::= { dsStatsEntry 2 }

dsStatsInOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of octets in packets, using a particular DS
            codepoint value, received on a half-duplex link or on the
            inbound connection of a full-duplex link."
    ::= { dsStatsEntry 3 }

dsStatsInOvflPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of times the associated dsStatsInPkts counter
            has overflowed.  Note that this object will only be
            instantiated if the associated dsStatsInHCPkts object is
            also instantiated for a particular dataSource."
    ::= { dsStatsEntry 4 }

dsStatsInOvflOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of times the associated dsStatsInOctets counter
            has overflowed.  Note that this object will only be
            instantiated if the associated dsStatsInHCOctets object is
            also instantiated for a particular dataSource."
    ::= { dsStatsEntry 5 }

dsStatsInHCPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The 64-bit version of the dsStatsInPkts object.
            Note that this object will only be instantiated if the RMON
            agent supports High Capacity RMON for a particular
            dataSource."
    ::= { dsStatsEntry 6 }

dsStatsInHCOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The 64-bit version of the dsStatsInOctets object.

            Note that this object will only be instantiated if the RMON
            agent supports High Capacity RMON for a particular
            dataSource."
    ::= { dsStatsEntry 7 }

dsStatsOutPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of packets using a particular DS codepoint
            value, received on a full-duplex link in the direction of
            the network."
    ::= { dsStatsEntry 8 }

dsStatsOutOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of octets in packets, using a particular DS
            codepoint value, received on a full-duplex link in the
            direction of the network."
    ::= { dsStatsEntry 9 }

dsStatsOutOvflPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of times the associated dsStatsOutPkts counter
            has overflowed.  Note that this object will only be
            instantiated if the associated dsStatsOutHCPkts object is
            also instantiated for a particular dataSource."
    ::= { dsStatsEntry 10 }

dsStatsOutOvflOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of times the associated dsStatsOutOctets counter
            has overflowed.  Note that this object will only be
            instantiated if the associated dsStatsOutHCOctets object is
            also instantiated for a particular dataSource."
    ::= { dsStatsEntry 11 }

dsStatsOutHCPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The 64-bit version of the dsStatsOutPkts object.

            Note that this object will only be instantiated if the RMON
            agent supports High Capacity RMON for a particular
            dataSource."
    ::= { dsStatsEntry 12 }

dsStatsOutHCOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The 64-bit version of the dsStatsOutOctets object.

            Note that this object will only be instantiated if the RMON
            agent supports High Capacity RMON for a particular
            dataSource."
    ::= { dsStatsEntry 13 }

--
-- DS Codepoint Per-Protocol Statistics Control Table
--

dsPdistControlTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DsPdistControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Controls the setup of per-protocol per-DS codepoint
            distribution statistics."
    ::= { dsPdistObjects 1 }

dsPdistControlEntry OBJECT-TYPE
    SYNTAX      DsPdistControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A conceptual row in the dsPdistControlTable.

            Entries are created and deleted from this table by
            management action only, using the dsPdistControlStatus
            RowStatus object.

            Activation of a control row in this table will cause an
            associated dsPdistStatsTable to be created and maintained by
            the agent."
    INDEX { dsPdistControlIndex }
    ::= { dsPdistControlTable 1 }

DsPdistControlEntry ::= SEQUENCE {
    dsPdistControlIndex                Integer32,
    dsPdistControlDataSource           DataSource,
    dsPdistControlMaxDesiredEntries    Integer32,
    dsPdistControlCollectMode          INTEGER,
    dsPdistControlDroppedFrames        Counter32,
    dsPdistControlInserts              Counter32,
    dsPdistControlDeletes              Counter32,
    dsPdistControlCreateTime           LastCreateTime,
    dsPdistControlOwner                OwnerString,
    dsPdistControlStatus               RowStatus
}

dsPdistControlIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An arbitrary and unique index for this
            dsPdistControlEntry."
    ::= { dsPdistControlEntry 1 }

dsPdistControlDataSource OBJECT-TYPE
    SYNTAX      DataSource
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The source of data for the this per-protocol DS codepoint
            distribution.

            The statistics in this group reflect all IPv4 and IPv6
            packets on the local network segment attached to the
            identified interface.

            This object may not be modified if the associated
            dsPdistControlStatus object is equal to active(1)."
    ::= { dsPdistControlEntry 2 }

dsPdistControlMaxDesiredEntries OBJECT-TYPE
    SYNTAX      Integer32 (-1 | 1..2147483647)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The maximum number of entries that are desired in the
            dsPdistStatsTable on behalf of this control entry. The probe
            will not create more than this number of associated entries
            in the table, but may choose to create fewer entries in this
            table for any reason including the lack of resources.

            If this value is set to -1, the probe may create any number
            of entries in this table.

            This object may not be modified if the associated
            dsPdistControlStatus object is equal to active(1)."
    ::= { dsPdistControlEntry 3 }

dsPdistControlCollectMode OBJECT-TYPE
    SYNTAX INTEGER {
            netLayer(1),         -- count L3 protocols
            appLayer(2),         -- count application protocols
            netAndAppLayers(3)   -- count L3 and app protocols
    }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The packet layer(s) at which the agent should process DS
            codepoint information, for each monitored packet.

            If this object has a value of 'netLayer(1)', then the agent
            will include only network layer protocols in the associated
            dsPdistStatsTable.

            If this object has a value of 'appLayer(2)', then the agent
            will include only application layer protocols in the
            associated dsPdistStatsTable. Any 'terminal' protocol is
            considered to be an application protocol.

            If this object has a value of 'netAndAppLayers(3)', then the
            agent will include only network and application layer
            protocols in the associated dsPdistStatsTable. Note that
            entries for transport layer protocols (e.g., TCP) will not
            be created by the agent, even if detected by the agent.

            This object may not be modified if the associated
            dsPdistControlStatus object is equal to active(1)."
    ::= { dsPdistControlEntry 4 }

dsPdistControlDroppedFrames OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The total number of frames which were received by the probe
            and therefore not accounted for in the *StatsDropEvents, but
            for which the probe chose not to count for this entry for
            whatever reason.  Most often, this event occurs when the
            probe is out of some resources and decides to shed load from
            this collection.

            This count does not include packets that were not counted
            because they had MAC-layer errors.

            Note that, unlike the dropEvents counter, this number is the
            exact number of frames dropped."
    ::= { dsPdistControlEntry 5 }

dsPdistControlInserts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of times a dsPdist entry has been inserted into
            the dsPdistTable.  If an entry is inserted, then deleted,
            and then inserted, this counter will be incremented by 2.

            To allow for efficient implementation strategies, agents may
            delay updating this object for short periods of time.  For
            example, an implementation strategy may allow internal data
            structures to differ from those visible via SNMP for short
            periods of time.  This counter may reflect the internal data
            structures for those short periods of time.

            Note that the table size can be determined by subtracting
            dsPdistControlDeletes from dsPdistControlInserts."
    ::= { dsPdistControlEntry 6 }

dsPdistControlDeletes OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of times a dsPdist entry has been deleted from
            the dsPdist table (for any reason).  If an entry is deleted,
            then inserted, and then deleted, this counter will be
            incremented by 2.

            To allow for efficient implementation strategies, agents may
            delay updating this object for short periods of time.  For
            example, an implementation strategy may allow internal data
            structures to differ from those visible via SNMP for short
            periods of time.  This counter may reflect the internal data
            structures for those short periods of time.

            Note that the table size can be determined by subtracting
            dsPdistControlDeletes from dsPdistControlInserts."
    ::= { dsPdistControlEntry 7 }

dsPdistControlCreateTime OBJECT-TYPE
    SYNTAX     LastCreateTime
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of sysUpTime when this control entry was last
            activated. This can be used by the management station to
            ensure that the table has not been deleted and recreated
            between polls."
    ::= { dsPdistControlEntry 8 }

dsPdistControlOwner OBJECT-TYPE
    SYNTAX      OwnerString
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The entity that configured this entry and is therefore
            using the resources assigned to it."
    ::= { dsPdistControlEntry 9 }

dsPdistControlStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The status of this row.

            An entry may not exist in the active state unless all
            objects in the entry have an appropriate value.

            If this object is not equal to active(1), all associated
            entries in the dsPdistStatsTable shall be deleted."
    ::= { dsPdistControlEntry 10 }

--
-- DS Codepoint Per-Protocol Statistics Table
--

dsPdistStatsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DsPdistStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A list of information on Per Protocol DS codepoint usage."
    ::= { dsPdistObjects 2 }

dsPdistStatsEntry OBJECT-TYPE
    SYNTAX      DsPdistStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A list of information on Differentiated Services DS
            codepoint usage, containing packet and octet counters for
            each DS codepoint configured for collection, and each
            protocol (as identified by the protocolDirLocalIndex for the
            protocol) identified in each monitored packet.

            The dsPdistControlIndex value in the index identifies the
            dsPdistControlEntry on whose behalf this entry was created.

            Only entries with non-zero statistics will be returned by
            the agent, in order to reduce the amount of polling required
            to retrieve data from this table. That is, an entry will be
            created when a packet of that type and DS codepoint value is
            detected by the agent.

            Note that only protocols which are encapsulated in IPv4 or
            IPv6 packets will be counted in this table, as indicated by
            the protocolDirTable configuration.

            An example of the indexing of this entry is
            dsPdistStatsPkts.9.29943.42.16."
     INDEX { dsPdistControlIndex,
             dsPdistTimeMark,
             protocolDirLocalIndex,
             dsPdistDsCodept }
    ::= { dsPdistStatsTable 1 }

DsPdistStatsEntry ::= SEQUENCE {
    dsPdistTimeMark             TimeFilter,
    dsPdistDsCodept             DSCodePoint,
    dsPdistStatsPkts            ZeroBasedCounter32,
    dsPdistStatsOctets          ZeroBasedCounter32,
    dsPdistStatsOvflPkts        ZeroBasedCounter32,
    dsPdistStatsOvflOctets      ZeroBasedCounter32,
    dsPdistStatsHCPkts          ZeroBasedCounter64,
    dsPdistStatsHCOctets        ZeroBasedCounter64,
    dsPdistStatsCreateTime      LastCreateTime
}

dsPdistTimeMark OBJECT-TYPE
    SYNTAX      TimeFilter
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The Time Filter index for this table. This object may be
            used by a management station to retrieve only rows which
            have been created or modified since a particular time.  Note
            that the current value for a row are always returned and the
            TimeFilter is not a historical data archiving mechanism.
            Refer to RFC 2021 [19] for a detailed description of
            TimeFilter operation."
    ::= { dsPdistStatsEntry 1 }

dsPdistDsCodept OBJECT-TYPE
    SYNTAX      DSCodePoint
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The Differentiated Services Codepoint value associated with
            the aggregated statistics for a particular protocol."
    ::= { dsPdistStatsEntry 2 }

dsPdistStatsPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of packets, monitored by this agent, and
            identified to be using a particular DS codepoint value in
            the DS header, on behalf of the protocol identified by the
            associated protocolDirLocalIndex value."
    ::= { dsPdistStatsEntry 3 }

dsPdistStatsOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of octets in packets, monitored by this agent
            and identified to be using a particular DS codepoint value
            in the DS header, on behalf of the protocol identified by
            the associated protocolDirLocalIndex value.

            Note that this object doesn't count just those octets in the
            particular protocol frames, but includes the entire packet
            that contained the protocol."
    ::= { dsPdistStatsEntry 4 }

dsPdistStatsOvflPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of times the associated dsPdistStatsPkts counter
            has overflowed.  Note that this object will only be
            instantiated if the associated dsPdistStatsHCPkts object is

            also instantiated for a particular dataSource."
    ::= { dsPdistStatsEntry 5 }

dsPdistStatsOvflOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of times the associated dsPdistStatsOctets
            counter has overflowed.  Note that this object will only be
            instantiated if the associated dsPdistStatsHCOctets object
            is also instantiated for a particular dataSource."
    ::= { dsPdistStatsEntry 6 }

dsPdistStatsHCPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The 64-bit version of the dsPdistStatsPkts object.

            Note that this object will only be instantiated if the RMON
            agent supports High Capacity RMON for a particular
            dataSource."
    ::= { dsPdistStatsEntry 7 }

dsPdistStatsHCOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The 64-bit version of the dsPdistStatsOctets object.

            Note that this object will only be instantiated if the RMON
            agent supports High Capacity RMON for a particular
            dataSource."
    ::= { dsPdistStatsEntry 8 }

dsPdistStatsCreateTime OBJECT-TYPE
    SYNTAX     LastCreateTime
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of sysUpTime when this dsPdistStats entry was
            last instantiated by the agent. This can be used by the
            management station to ensure that the entry has not been
            deleted and recreated between polls."
    ::= { dsPdistStatsEntry 9 }

--
-- IP Host Per DS Codepoint Statistics Control Table
--

dsHostControlTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DsHostControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "Controls setup of per DS codepoint per IP host distribution
            statistics."
    ::= { dsHostObjects 1 }

dsHostControlEntry OBJECT-TYPE
    SYNTAX      DsHostControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A conceptual row in the dsHostControlTable.

            Entries are created and deleted from this table by
            management action only, using the dsHostControlStatus
            RowStatus object.

            Activation of a control row in this table will cause an
            associated dsHostTable to be created and maintained by the
            agent."
    INDEX { dsHostControlIndex }
    ::= { dsHostControlTable 1 }

DsHostControlEntry ::= SEQUENCE {
    dsHostControlIndex                Integer32,
    dsHostControlDataSource           DataSource,
    dsHostControlMaxDesiredEntries    Integer32,
    dsHostControlNumAddrBits          Integer32,
    dsHostControlDroppedFrames        Counter32,
    dsHostControlInserts              Counter32,
    dsHostControlDeletes              Counter32,
    dsHostControlCreateTime           LastCreateTime,
    dsHostControlOwner                OwnerString,
    dsHostControlStatus               RowStatus
}

dsHostControlIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An arbitrary and unique index for this dsHostControlEntry."
    ::= { dsHostControlEntry 1 }

dsHostControlDataSource OBJECT-TYPE
    SYNTAX      DataSource
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The source of data for the associated dsHostTable.

            The statistics in this group reflect all IPv4 and IPv6
            packets on the local network segment attached to the
            identified interface.

            This object may not be modified if the associated
            dsHostControlStatus object is equal to active(1)."
    ::= { dsHostControlEntry 2 }

dsHostControlMaxDesiredEntries OBJECT-TYPE
    SYNTAX      Integer32 (-1 | 1..2147483647)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The maximum number of entries that are desired in the
            dsHostTable on behalf of this control entry. The probe will
            not create more than this number of associated entries in
            the table, but may choose to create fewer entries in this
            table for any reason including the lack of resources.

            If this value is set to -1, the probe may create any number
            of entries in this table.

            This object may not be modified if the associated
            dsHostControlStatus object is equal to active(1)."
    ::= { dsHostControlEntry 3 }

dsHostControlNumAddrBits OBJECT-TYPE
    SYNTAX      Integer32 (8..32)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The number of 'leftmost' contiguous bits in the IPv4 host
            address (as identified by the dsHostAddress object) that
            should be maintained in this collection.

            If this object has a value less than '32', then 'm'
            rightmost bits, where 'm' is equal to '32 -
            dsHostControlNumAddrBits', will be cleared to zero for
            counting purposes only.  The 'leftmost' bit is the most
            significant bit of the first network-byte-order octet of the
            address.

            Note that this object only affects IPv4 host entries in the
            associated dsHostTable. IPv6 entries are not affected by
            this object.

            This object may not be modified if the associated
            dsHostControlStatus object is equal to active(1)."
    DEFVAL { 32 }
    ::= { dsHostControlEntry 4 }

dsHostControlDroppedFrames OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The total number of frames which were received by the probe
            and therefore not accounted for in the *StatsDropEvents, but
            for which the probe chose not to count for the associated
            dsHost entries for whatever reason.  Most often, this event
            occurs when the probe is out of some resources and decides
            to shed load from this collection.

            This count does not include packets that were not counted
            because they had MAC-layer errors.

            Note that if the dsHostTable is inactive because no
            appropriate protocols are enabled in the protocol directory,
            this value should be 0.

            Note that, unlike the dropEvents counter, this number is the
            exact number of frames dropped."
    ::= { dsHostControlEntry 5 }

dsHostControlInserts OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of times a dsHost entry has been inserted into
            the dsHost table.  If an entry is inserted, then deleted,
            and then inserted, this counter will be incremented by 2.

            To allow for efficient implementation strategies, agents may
            delay updating this object for short periods of time.  For
            example, an implementation strategy may allow internal data
            structures to differ from those visible via SNMP for short
            periods of time.  This counter may reflect the internal data
            structures for those short periods of time.

            Note that the table size can be determined by subtracting
            dsHostControlDeletes from dsHostControlInserts."
    ::= { dsHostControlEntry 6 }

dsHostControlDeletes OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The number of times a dsHost entry has been deleted from
            the dsHost table (for any reason).  If an entry is deleted,
            then inserted, and then deleted, this counter will be
            incremented by 2.

            To allow for efficient implementation strategies, agents may
            delay updating this object for short periods of time.  For
            example, an implementation strategy may allow internal data
            structures to differ from those visible via SNMP for short
            periods of time.  This counter may reflect the internal data
            structures for those short periods of time.

            Note that the table size can be determined by subtracting
            dsHostControlDeletes from dsHostControlInserts."
    ::= { dsHostControlEntry 7 }

dsHostControlCreateTime OBJECT-TYPE
    SYNTAX     LastCreateTime
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of sysUpTime when this control entry was last
            activated. This can be used by the management station to
            ensure that the table has not been deleted and recreated
            between polls."
    ::= { dsHostControlEntry 8 }

dsHostControlOwner OBJECT-TYPE
    SYNTAX      OwnerString
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The entity that configured this entry and is therefore
            using the resources assigned to it."
    ::= { dsHostControlEntry 9 }

dsHostControlStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
            "The status of this dsHostControlEntry.

            An entry may not exist in the active state unless all
            objects in the entry have an appropriate value.

            If this object is not equal to active(1), all associated
            entries in the dsHostTable shall be deleted."
    ::= { dsHostControlEntry 10 }

--
-- DS Codepoint Per IP Host Statistics Table
--

dsHostTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DsHostEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A collection of statistics for a particular IPv4 or IPv6
            address that has been discovered on an interface of this
            device.

            The probe will add to this table all IP addresses seen as
            the source or destination address in all packets with no MAC
            errors, and will increment octet and packet counts in the
            table for all packets with no MAC errors."
    ::= { dsHostObjects 2 }

dsHostEntry OBJECT-TYPE
    SYNTAX      DsHostEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A list of information on Differentiated Services DS
            codepoint usage, containing packet and octet counters for
            each DS codepoint configured for collection per host
            address, as identified in each monitored packet.

            The dsHostControlIndex value in the index identifies the
            dsHostControlEntry on whose behalf this entry was created.
            The length of the dsHostAddress field identifies the network
            layer protocol as either IPv4 or IPv6.

            Only entries with non-zero statistics will be returned by
            the agent, in order to reduce the amount of polling required
            to retrieve data from this table.  An entry will be created
            when a packet of that type and DS codepoint value is
            detected by the agent.

            An example of the indexing of this entry is
            dsHostOutPkts.1.24873.7.4.171.69.120.0"
    INDEX { dsHostControlIndex,
            dsHostTimeMark,
            dsHostDsCodept,
            dsHostAddress }
    ::= { dsHostTable 1 }

DsHostEntry ::= SEQUENCE {
    dsHostTimeMark              TimeFilter,
    dsHostDsCodept              DSCodePoint,
    dsHostAddress               OCTET STRING,
    dsHostInPkts                ZeroBasedCounter32,
    dsHostInOctets              ZeroBasedCounter32,
    dsHostInOvflPkts            ZeroBasedCounter32,
    dsHostInOvflOctets          ZeroBasedCounter32,
    dsHostInHCPkts              ZeroBasedCounter64,
    dsHostInHCOctets            ZeroBasedCounter64,
    dsHostOutPkts               ZeroBasedCounter32,
    dsHostOutOctets             ZeroBasedCounter32,
    dsHostOutOvflPkts           ZeroBasedCounter32,
    dsHostOutOvflOctets         ZeroBasedCounter32,
    dsHostOutHCPkts             ZeroBasedCounter64,
    dsHostOutHCOctets           ZeroBasedCounter64,
    dsHostCreateTime            LastCreateTime
}

dsHostTimeMark OBJECT-TYPE
    SYNTAX      TimeFilter
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The Time Filter index for this table. This object may be
            used by a management station to retrieve only rows which
            have been created or modified since a particular time.  Note
            that the current value for a row are always returned and the
            TimeFilter is not a historical data archiving mechanism.
            Refer to RFC 2021 [19] for a detailed description of
            TimeFilter operation."
    ::= { dsHostEntry 1 }

dsHostDsCodept OBJECT-TYPE
    SYNTAX      DSCodePoint
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The Differentiated Services Codepoint value associated with
            the aggregated statistics for a particular IP host."
    ::= { dsHostEntry 2 }

dsHostAddress OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "The network address for this dsHostEntry.

            The length of the address string is used to determine if
            this entry represents an IPv4 or IPv6 address.  For example,
            if the length of this object is '4', then this object is
            encoded as an IPv4 address in network byte order.

            Note that IPv4 addresses may have some 'rightmost' bits
            cleared to zero for counting purposes, as specified by the
            associated dsHostControlNumHostBits object."
    ::= { dsHostEntry 3 }

dsHostInPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of packets without errors, using the identified
            DS codepoint and transmitted to this address, since it was
            added to the dsHostTable.  Note that this is the number of
            link-layer packets, so if a single network-layer packet is
            fragmented into several link-layer frames, this counter is
            incremented several times."
    ::= { dsHostEntry 4 }

dsHostInOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of octets, transmitted to this address and using
            the identified DS codepoint, since it was added to the
            dsHostTable (excluding framing bits but including FCS
            octets), excluding those octets in packets that contained
            errors.

            Note this doesn't count just those octets in the particular
            protocol frames, but includes the entire packet that
            contained the protocol."
    ::= { dsHostEntry 5 }

dsHostInOvflPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of times the associated dsHostInPkts counter has
            overflowed.  Note that this object will only be instantiated
            if the associated dsHostInHCPkts object is also instantiated
            for a particular dataSource."
    ::= { dsHostEntry 6 }

dsHostInOvflOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of times the associated dsHostInOctets counter
            has overflowed.  Note that this object will only be
            instantiated if the associated dsHostInHCOctets object is
            also instantiated for a particular dataSource."
    ::= { dsHostEntry 7 }

dsHostInHCPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The 64-bit version of the dsHostInPkts object.

            Note that this object will only be instantiated if the RMON
            agent supports High Capacity RMON for a particular
            dataSource."
    ::= { dsHostEntry 8 }

dsHostInHCOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The 64-bit version of the dsHostInOctets object.

            Note that this object will only be instantiated if the RMON
            agent supports High Capacity RMON for a particular
            dataSource."
    ::= { dsHostEntry 9 }

dsHostOutPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of packets without errors, using the identified
            DS codepoint and transmitted by this address, since it was
            added to the dsHostTable.  Note that this is the number of
            link-layer packets, so if a single network-layer packet is
            fragmented into several link-layer frames, this counter is
            incremented several times."
    ::= { dsHostEntry 10 }

dsHostOutOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of octets, transmitted by this address and using
            the identified DS codepoint, since it was added to the
            dsHostTable (excluding framing bits but including FCS
            octets), excluding those octets in packets that contained
            errors.

            Note this doesn't count just those octets in the particular
            protocol frames, but includes the entire packet that
            contained the protocol."
    ::= { dsHostEntry 11 }

dsHostOutOvflPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of times the associated dsHostOutPkts counter
            has overflowed.  Note that this object will only be
            instantiated if the associated dsHostOutHCPkts object is
            also instantiated for a particular dataSource."
    ::= { dsHostEntry 12 }

dsHostOutOvflOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of times the associated dsHostOutOctets counter
            has overflowed.  Note that this object will only be
            instantiated if the associated dsHostOutHCOctets object is
            also instantiated for a particular dataSource."
    ::= { dsHostEntry 13 }

dsHostOutHCPkts OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The 64-bit version of the dsHostOutPkts object.
            Note that this object will only be instantiated if the RMON
            agent supports High Capacity RMON for a particular
            dataSource."
    ::= { dsHostEntry 14 }

dsHostOutHCOctets OBJECT-TYPE
    SYNTAX      ZeroBasedCounter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The 64-bit version of the dsHostOutOctets object.

            Note that this object will only be instantiated if the RMON
            agent supports High Capacity RMON for a particular
            dataSource."
    ::= { dsHostEntry 15 }

dsHostCreateTime OBJECT-TYPE
    SYNTAX     LastCreateTime
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
            "The value of sysUpTime when this dsHost entry was last
            instantiated by the agent. This can be used by the
            management station to ensure that the entry has not been
            deleted and recreated between polls."
    ::= { dsHostEntry 16 }

--
-- Notifications Section
-- (none defined)
--

--
-- Conformance Section
--

dsMonCompliances OBJECT IDENTIFIER ::= { dsMonConformance 1 }
dsMonGroups      OBJECT IDENTIFIER ::= { dsMonConformance 2 }

dsMonCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
            "Describes the requirements for conformance to the
            Differentiated Services Monitoring MIB."

    MODULE  -- this module
        MANDATORY-GROUPS { dsStatsGroup, dsHostGroup }
        GROUP   dsStatsHCGroup
        DESCRIPTION
            "The dsStatsHCGroup is mandatory for systems which implement
            the dsStatsGroup and also implement High Capacity
            monitoring."
        GROUP   dsPdistGroup
        DESCRIPTION
            "The dsPdistGroup is mandatory for systems which implement
            DS codepoint monitoring and the protocolDirTable from the
            RMON-2 MIB [19]."
        GROUP   dsPdistHCGroup
        DESCRIPTION
            "The dsPdistHCGroup is mandatory for systems which implement
            the dsPdistGroup and also implement High Capacity
            monitoring."
        GROUP   dsHostHCGroup
        DESCRIPTION
            "The dsHostHCGroup is mandatory for systems which implement
            the dsHostGroup and also implement High Capacity
            monitoring."
    ::= { dsMonCompliances 1 }

dsStatsGroup OBJECT-GROUP
    OBJECTS {
             dsStatsControlDataSource,
             dsStatsControlDroppedFrames,
             dsStatsControlCreateTime,
             dsStatsControlOwner,
             dsStatsControlStatus,
             dsStatsInPkts,
             dsStatsInOctets,
             dsStatsOutPkts,
             dsStatsOutOctets
    }
    STATUS  current
    DESCRIPTION
            "A collection of objects providing per DS codepoint
            statistics."
    ::= { dsMonGroups 1 }

dsStatsHCGroup OBJECT-GROUP
    OBJECTS {
            dsStatsInOvflPkts,
            dsStatsInOvflOctets,
            dsStatsInHCPkts,
            dsStatsInHCOctets,
            dsStatsOutOvflPkts,
            dsStatsOutOvflOctets,
            dsStatsOutHCPkts,
            dsStatsOutHCOctets
    }
    STATUS  current
    DESCRIPTION
            "A collection of objects providing per DS codepoint
            statistics for high capacity data sources."
    ::= { dsMonGroups 2 }

dsPdistGroup OBJECT-GROUP
    OBJECTS {
             dsPdistControlDataSource,
             dsPdistControlMaxDesiredEntries,
             dsPdistControlCollectMode,
             dsPdistControlDroppedFrames,
             dsPdistControlInserts,
             dsPdistControlDeletes,
             dsPdistControlCreateTime,
             dsPdistControlOwner,
             dsPdistControlStatus,
             dsPdistStatsPkts,
             dsPdistStatsOctets,
             dsPdistStatsCreateTime
    }
    STATUS  current
    DESCRIPTION
            "A collection of objects providing per protocol DS codepoint
            monitoring extensions to the RMON-2 MIB."
    ::= { dsMonGroups 3 }

dsPdistHCGroup OBJECT-GROUP
    OBJECTS {
            dsPdistStatsOvflPkts,
            dsPdistStatsOvflOctets,
            dsPdistStatsHCPkts,
            dsPdistStatsHCOctets
    }
    STATUS  current
    DESCRIPTION
            "A collection of objects providing per protocol High
            Capacity DS codepoint monitoring extensions to the RMON-2
            MIB."
    ::= { dsMonGroups 4 }

dsHostGroup OBJECT-GROUP
    OBJECTS {
            dsHostControlDataSource,
            dsHostControlMaxDesiredEntries,
            dsHostControlNumAddrBits,
            dsHostControlDroppedFrames,
            dsHostControlInserts,
            dsHostControlDeletes,
            dsHostControlCreateTime,
            dsHostControlOwner,
            dsHostControlStatus,
            dsHostInPkts,
            dsHostInOctets,
            dsHostOutPkts,
            dsHostOutOctets,
            dsHostCreateTime
    }
    STATUS  current
    DESCRIPTION
            "A collection of objects providing per IP Host DS codepoint
            monitoring functions."
    ::= { dsMonGroups 5 }

dsHostHCGroup OBJECT-GROUP
    OBJECTS {
            dsHostInOvflPkts,
            dsHostInOvflOctets,
            dsHostInHCPkts,
            dsHostInHCOctets,
            dsHostOutOvflPkts,
            dsHostOutOvflOctets,
            dsHostOutHCPkts,
            dsHostOutHCOctets
    }
    STATUS  current
    DESCRIPTION
            "A collection of objects providing per IP Host High Capacity
            DS codepoint monitoring functions."
    ::= { dsMonGroups 6 }

END